home *** CD-ROM | disk | FTP | other *** search
/ Totally AMOS / Totally AMOS - Issue 1 (1991-11)(Tucker, Len - Tucker, Anne).adf / source_progs / Puzzle.AMOS / Puzzle.amosSourceCode < prev    next >
AMOS Source Code  |  1991-09-23  |  8KB  |  331 lines

  1. 'PPP  U  U ZZZZ ZZZZ L    EEEE 
  2. 'P  P U  U   Z    Z  L    E
  3. 'PPP  U  U  Z    Z   L    EEE
  4. 'P    U  U Z    Z    L    E
  5. 'P     UU  ZZZZ ZZZZ LLLL EEEE 
  6. '
  7. 'A game by S.Raaijmakers 
  8. '
  9. 'I like to thank the makers of AMOS. They made it possible for me to finally   
  10. 'make games myself.
  11. '
  12. 'Off course this game is Public Domain, so copying it is free. 
  13. 'In fact, I'd like you to copy it !
  14. '
  15. On Error Goto FOUT
  16. Dim SCORE(6),NAME$(6),VELD(6),T(16)
  17. BEGIN:
  18. Unpack 2 To 0 : Screen Display 0,128,120,320,Screen Height : Hide 
  19. Fade 5,0,$200,$400,$600,$700,$900,$B00,$D00,$F00,$F22,$F44,$F66,$F99,$FBB,$FDD,$FFF
  20. Wait 75 : Load "Blokjes.abk"
  21. Screen Open 1,320,100,8,Lowres
  22. Flash Off : Curs Off : Unpack 15 To 1 : Paper 0 : Pen 7
  23. Screen Display 1,128,120,320,100 : Screen Hide 1 : Wait Vbl 
  24. Screen 0 : Fade 5 : Wait 75 : Unpack 3 To 0
  25. Fade 5,0,$410,$620,$850,$A70,$B90,$DC0,$FF0 : Wait 75
  26. Screen Open 2,320,32,8,Lowres
  27. Flash Off : Curs Off : Unpack 14 To 2 : Reserve Zone 3
  28. Screen Display 2,128,70,320,32
  29. Colour 17,$922 : Colour 18,$C55 : Colour 19,0 : Screen Hide 2
  30. Screen 0 : Fade 5 : Wait 75 : Ink ,1
  31. LEVEL=1 : EIND=251520
  32. WEG$=Space$(27)+Cright$+"      "+Cright$+"  "
  33. For A=0 To 6 : SCORE(A)=0 : NAME$(A)="No Name - No Score" : VELD(A)=0 : Next A
  34. Screen Open 0,320,256,32,Lowres : Screen To Front 1 : Screen To Front 2
  35. Curs Off : Flash Off : Gr Writing 0 : Paper 0 : Pen 9
  36. Unpack 13 To 0
  37. REGENBOOG
  38. Double Buffer 
  39. Paste Bob 134,21,18 : Ink 0 : Bar 173,21 To 185,33 : Ink 9
  40. Randomize Timer
  41. Reserve Zone 16
  42. For A=1 To 3 : Bob A,82+26*A,76,A : Next A
  43. For B=1 To 3 : For A=1 To 4 : Bob B*4+A-1,82+26*A,76+26*B,B*4+A-1 : Next A : Next B
  44. Wait Vbl 
  45. For B=0 To 3 : For A=1 To 4 : Set Zone 4*B+A,82+26*A,76+26*B To 107+26*A,101+26*B : Next A : Next B
  46. T(1)=1 : T(2)=2 : T(3)=3 : T(4)=0 : For A=5 To 16 : T(A)=A-1 : Next A
  47. Limit Mouse 236,118 To 328,210
  48. Channel 1 To Bob 16
  49. Bob 16,0,0,16
  50. Amal 1,"Loop: Let X=XM-128 ; Let Y=YM-42 ; Jump Loop"
  51. Amal On 1
  52. Goto SCHUDDEN
  53. BESTURING:
  54. Repeat 
  55.  Inc TIJD
  56.  If TIJD>EIND and EIND>1 Then Goto GAMEOVER
  57. Until Mouse Key=0
  58. Bob 16,,,16
  59. Repeat 
  60.  Inc TIJD : Inc TIJD
  61.  If TIJD>EIND and EIND>1 Then Goto GAMEOVER
  62.  T$=Inkey$
  63.  If Scancode=69
  64.   A$="YOU ABORTED THE GAME AFTER "+(Str$(ZET)-" ")+" MOVES." : Ink 9,0 : Text 0,11,A$
  65.   Wait 80 : Ink 0 : Bar 0,5 To 320,12
  66.   Ink 9,0 : Text 0,11,"PRESS THE MOUSE BUD."
  67.   IN:
  68.   Repeat : M=Mouse Key : Until M<>0
  69.   Ink 0 : Bar 0,5 To 320,12
  70.   If M=1
  71.    Ink 9,0 : Text 0,11,"THE OTHER ONE, YOU WALLY !" : Wait 80
  72.    Ink 0 : Bar 0,5 To 320,12 : Goto IN
  73.   Else 
  74.    Sam Play 3,4,4000 : Goto QUIT
  75.   End If 
  76.   Ink 0 : Bar 0,5 To 320,12
  77.   Goto SCHUDDEN
  78.  End If 
  79. Until Mouse Key=1
  80. ZET=ZET+1 : Bob 16,,,17
  81. Sam Play 3,4,8000
  82. TIJD=TIJD+75
  83. Z=Mouse Zone
  84. If Z>4
  85.  If T(Z-4)=0
  86.   Bob T(Z),,Y Bob(T(Z))-26,T(Z)
  87.   T(Z-4)=T(Z) : T(Z)=0
  88.  End If 
  89. End If 
  90. If Z<13
  91.  If T(Z+4)=0
  92.   Bob T(Z),,Y Bob(T(Z))+26,T(Z)
  93.   T(Z+4)=T(Z) : T(Z)=0
  94.  End If 
  95. End If 
  96. If Z<>1 and Z<>5 and Z<>9 and Z<>13
  97.  If T(Z-1)=0
  98.   Bob T(Z),X Bob(T(Z))-26,,T(Z)
  99.   T(Z-1)=T(Z) : T(Z)=0
  100.  End If 
  101. End If 
  102. If Z<>4 and Z<>8 and Z<>12 and Z<>16
  103.  If T(Z+1)=0
  104.   Bob T(Z),X Bob(T(Z))+26,,T(Z)
  105.   T(Z+1)=T(Z) : T(Z)=0
  106.  End If 
  107. End If 
  108. If T(4)=0
  109.  If EIND>0
  110.   Goto GEHAALD
  111.  End If 
  112. End If 
  113. Goto BESTURING
  114. GEHAALD:
  115. For A=1 To 3
  116.  If T(A)<>A Then Goto BESTURING
  117. Next A
  118. For A=5 To 16
  119.  If A=9 or A=13
  120.   If T(9)<>8 and T(9)<>12
  121.    Goto BESTURING
  122.   Else 
  123.    Exit 1
  124.   End If 
  125.   If T(13)<>8 and T(13)<>12
  126.    Goto BESTURING
  127.   Else 
  128.    Exit 1
  129.   End If 
  130.  Else 
  131.   If T(A)<>A-1
  132.    Goto BESTURING
  133.   End If 
  134.  End If 
  135. Next A
  136. A$="YOU SOLVED IT IN "+(Str$(ZET)-" ")+" MOVES.(REMARKABLE)" : Ink 9,0 : Text 0,11,A$
  137. Sam Play 3,3,8000
  138. Repeat : Until Mouse Key=2
  139. Sam Play 3,4,4000
  140. Ink 0 : Bar 0,5 To 320,12
  141. Gosub HOPPA
  142. PLAATS:
  143. Ink 9,0 : Text 0,11,"HOLD YER BREATH. (LOADIN')"
  144. If LEVEL=0 Then Load "Blokjes.abk" : LEVEL=1 : EIND=251520 : Goto TEST
  145. If LEVEL=1 Then Load "Blokjes2.abk" : LEVEL=2 : EIND=125760 : Goto TEST
  146. If LEVEL=2 Then Load "Blokjes3.abk" : LEVEL=3 : EIND=62880 : Goto TEST
  147. If LEVEL=3 Then Load "Blokjes4.abk" : LEVEL=4 : EIND=31440 : Goto TEST
  148. If LEVEL=4 Then Goto DEMO
  149. TEST:
  150. Ink 0 : Bar 0,5 To 320,12
  151. Paste Bob 134,21,18 : Ink 0 : Bar 173,21 To 185,33 : Ink 9
  152. Goto SCHUDDEN
  153. GAMEOVER:
  154. Ink 9,0 : Text 0,11,"GAME OVER, MAN ! (TIME SHORTAGE)"
  155. Repeat : Until Mouse Key=2
  156. Ink 0 : Bar 0,5 To 320,12
  157. Gosub HOPPA
  158. LEVEL=0 : Goto PLAATS
  159. HOPPA:
  160. Screen 1 : Screen Show 1
  161. Screen To Front 1
  162. SEC=TIJD/524 : SEC2=EIND/524
  163. TMIN=SEC/60 : TMIN2=SEC2/60
  164. PUNT=PUNT+((250-ZET)*10+(EIND-TIJD)*2^LEVEL)/100
  165. Locate 10,1 : Print "         " : Locate 30,1 : Print "         "
  166. Locate 10,1 : Print TMIN2;":";SEC2-TMIN2*60
  167. Locate 30,1 : Print TMIN;":";SEC-TMIN*60
  168. If TIJD>=EIND or LEVEL=4 Then Gosub SCORES
  169. Repeat : Until Mouse Key=2
  170. Screen Hide 1 : Screen 0 : Wait Vbl 
  171. Screen To Front 0
  172. Return 
  173. SCHUDDEN:
  174. TIJD=0
  175. Ink 9,0 : Text 0,11,"SHUFFIN' IT ALL UP..."
  176. T(1)=Int(Rnd(15)+0.5)
  177. For A=2 To 16
  178.  TUSSEN:
  179.  T(A)=Int(Rnd(15)+0.5)
  180.  For B=1 To A-1
  181.   If T(A)=T(B) Then Goto TUSSEN : 
  182.  Next B
  183. Next A
  184. Bell 
  185. For B=0 To 3
  186.  For A=1 To 4
  187.   If T(4*B+A)<>0
  188.    Bob T(4*B+A),82+26*A,76+26*B,T(4*B+A)
  189.   End If 
  190.  Next A
  191. Next B
  192. Ink 0 : Bar 0,5 To 320,12
  193. ZET=0
  194. Goto BESTURING
  195. SCORES:
  196. If SCORE(6)>PUNT Then Return 
  197. For A=4 To 10
  198.  Locate 2,A : Print WEG$
  199. Next A
  200. Locate 2,5 : Print "     Enter your name :     "
  201. Locate 2,7 : Print "_" : Locate 2,7
  202. NAAM$=""
  203. Do 
  204.  A$=Inkey$
  205.  If Scancode>64
  206.   If Asc(A$)=13
  207.    Exit 1
  208.   End If 
  209.  Else 
  210.   If X Curs<28
  211.    Print A$; : NAAM$=NAAM$+A$
  212.   End If 
  213.  End If 
  214. Loop 
  215. Sam Play 3,4,16000
  216. If SCORE(5)>PUNT Then SCORE(6)=PUNT
  217. For B=0 To 5
  218.  If PUNT>SCORE(B)
  219.   For A=5 To B Step -1
  220.    SCORE(A+1)=SCORE(A)
  221.    NAME$(A+1)=NAME$(A)
  222.    VELD(A+1)=VELD(A)
  223.   Next A
  224.   SCORE(B)=PUNT
  225.   NAME$(B)=NAAM$
  226.   VELD(B)=LEVEL
  227.   Exit 1
  228.  End If 
  229. Next B
  230. For A=4 To 10
  231.  Locate 2,A : Print WEG$
  232. Next A
  233. For A=0 To 6
  234.  Locate 2,4+A : Print NAME$(A)
  235.  Locate 30,4+A : Print SCORE(A)
  236.  Locate 37,4+A : Print VELD(A)
  237. Next A
  238. Return 
  239. QUIT:
  240. Screen Show 2
  241. Screen 2
  242. Screen To Front 2
  243. Limit Mouse 128,70 To 434,89
  244. Set Zone 1,37,7 To 90,24
  245. Set Zone 2,133,7 To 186,24
  246. Set Zone 3,229,7 To 282,24
  247. Do 
  248.  Repeat : Show : Until Mouse Key=1
  249.  If Mouse Zone=1
  250.   Screen Hide 2 : Screen 0 : Screen To Front 0
  251.   Load "Blokjes.abk"
  252.   Limit Mouse 236,118 To 328,210 : Hide On 
  253.   EIND=-100
  254.   Goto SCHUDDEN
  255.  End If 
  256.  If Mouse Zone=2
  257.   Screen Hide 2 : Screen 0
  258.   Limit Mouse 236,118 To 328,210 : Hide On 
  259.   EIND=251520 : LEVEL=0 : Goto PLAATS
  260.  End If 
  261.  If Mouse Zone=3
  262.   Screen Close 2 : Screen Close 1
  263.   Screen 0 : Screen To Front 0
  264.   Fade 5 : Wait 75 : Screen Close 0 : End 
  265.  End If 
  266. Loop 
  267. DEMO:
  268. Screen Open 0,320,100,16,Lowres
  269. Double Buffer 
  270. Screen Display 0,128,110,320,100
  271. Curs Off : Flash Off : Cls 0
  272. Rainbow Del 
  273. Wait Vbl 
  274. Load "Ending.abk"
  275. Get Sprite Palette 
  276. Channel 1 To Bob 1
  277. Bob 1,0,60,1
  278. Set Bob 1,1,,
  279. LEM$="Anim 9,(1,12)(2,12);Move 160,0,200;"
  280. LEM$=LEM$+"Anim 1,(1,8)(3,6)(4,30)(5,6)(6,30)(7,6)(8,6)(9,6)(10,30)(11,6)(12,6)(13,6)(14,1)"
  281. Wait Vbl 
  282. Amal 1,LEM$
  283. Amal On 
  284. Wait 280
  285. Sam Play 3,2,8000
  286. Wait 50
  287. Sam Play 3,1,8000
  288. Wait 100
  289. Repeat : M=Mouse Key : Until M<>0
  290. If M=1 Then Goto BEGIN
  291. If M=2 Then Goto DEMO
  292. Sam Play 3,3,4000
  293. FOUT:
  294. ERR=Errn
  295. Screen Open 3,640,42,2,Hires
  296. Wait Vbl 
  297. Curs Off 
  298. Palette 0,$F00
  299. Cls 1
  300. Ink 0 : Bar 8,4 To 632,37
  301. Locate 13,1 : Print "Error in program. Press left mouse button to continue."
  302. Locate 20,3 : Print "Guru Meditation. Error code";ERR
  303. Do 
  304.  Ink 0
  305.  Paint 2,2
  306.  For A=1 To 50
  307.   If Mouse Key=1 Then Screen Close 3 : Resume Next 
  308.   If Mouse Key=2 Then End 
  309.   Wait Vbl 
  310.  Next A
  311.  Ink 1
  312.  Box 8,4 To 632,37
  313.  Paint 2,2
  314.  For A=1 To 50
  315.   If Mouse Key=1 Then Screen Close 3 : Resume Next 
  316.   If Mouse Key=2 Then End 
  317.   Wait Vbl 
  318.  Next A
  319. Loop 
  320. Procedure REGENBOOG
  321.  Set Rainbow 0,9,256,"","",""
  322.  Rainbow 0,0,40,16
  323.  Rain(0,7)=$630
  324.  Rain(0,8)=$970
  325.  Rain(0,9)=$CB0
  326.  Rain(0,10)=$FF0
  327.  Rain(0,11)=$FF0
  328.  Rain(0,12)=$CB0
  329.  Rain(0,13)=$970
  330.  Rain(0,14)=$630
  331. End Proc